import torch
from torch import nn
from torch.nn import L1Loss, MSELoss

'''
1. 定义输入张量 input 和目标张量 target，并调整其形状以适配损失函数的输入要求。
2. 使用 L1Loss 计算绝对值误差损失，并设置 reduction='sum'，输出总误差。
3. 使用 MSELoss 计算均方误差损失，输出结果。
4. 定义新的输入张量 x 和目标标签 y，使用 CrossEntropyLoss 计算交叉熵损失，输出结果。
'''
input = torch.tensor([1,2,3],dtype=torch.float32)
target = torch.tensor([1,2,5],dtype=torch.float32)

input = torch.reshape(input,(1,1,1,3))
target = torch.reshape(target,(1,1,1,3))

loss = L1Loss(reduction='sum')
output = loss(input,target)
print(output)

loss_mse = MSELoss()
output2 = loss_mse(input,target)
print(output2)

x = torch.tensor([0.1,0.2,0.3])
x = torch.reshape(x,(1,3))
y = torch.tensor([1])
loss_cross = nn.CrossEntropyLoss()
output3 = loss_cross(x,y)
print(output3)